#ifndef GAMEOBJECT_HPP
#define GAMEOBJECT_HPP

#include <string>
#include <vector>

class GameObject
{
    public:
        enum State {
            STATIC,
            DYNAMIC,
            MOVE,
            JUMP,
            CHANGE_DIRECTION,
            FALL,
            BACK_TO_GROUND
        };

    protected:
        float m_angle;
        float m_distance;
        std::vector<std::string> m_vSpriteName;
        int m_width;
        int m_height;
        State m_state;
        State m_previousState;

    public:
        GameObject();
        ~GameObject();

        virtual void update()=0;

        float angle() const;
        float distance() const;
        const std::vector<std::string>& vSpriteName() const;
        int width() const;
        int height() const;
        int floor() const;
        State state() const { return m_state; };

        void setAngle(float angle);
        void setDistance(float distance);
        void setVSpriteName(std::vector<std::string>& vSpriteName);
        void setWidth(int width);
        void setHeight(int height);
        virtual void setState(State state);
};

#endif
